[따배쿠] 쿠버네티스 입문


쿠버네티스: 컨테이너를 도커 플랫폼에 올려서 관리 + 운영 + 클러스터 서비스를 지원해 주는 것
(컨테이너 오케스트레이션)

컨테이너란

컨테이너를 동작시키기 위해선 도커, 로켓 등 컨테이너 플랫폼을 이용하면 컨테이너를 사용이 가능

Hub

컨테이너나 리소스를 저장하는 창고 개념 (프라이빗이나(사내망), 퍼블릭한 공간으로 나눌 수 있다.)

가상머신 VS 컨테이너

가장 큰 차이는 Hypervisor의 특성상 OS가 개별적으로 올라가 시스템의 부피가 커진다. 하지만 컨테이너는 도커 엔진을 데몬으로 사용하며, 각각의 컨테이너들은 격리 되고, 하나의 호스트OS를 사용 함으로써 하드웨어 자원을 경량으로 사용이 가능하다.

따라서 컨테이너의 주목적은 경량화의 가장 큰 장점을 살린 배포(deploy)이다.

image-2-1024x520

Scale up VS Scale out

  • Scale up은 리소스가 더 필요할 때 해당 자원(서버)의 스펙 자체를 올린다. - 하드웨어 스펙을 증가시키는 수직적인 스케일
  • Scale out은 리소스가 더 필요할 때 해당 자원(서버)의 대수를 늘린다. - 하드웨어 자원을 늘려 수평적인 스케일

도커는 Scale out 방식이며, 경량화이기 때문에 자원이 빠르게 확장, 축소가 가능하다.

멀티호스트 도커 플랫폼

시스템 자체가 다운 되버리면 도커 컨테이너도 의미가 없다.(모두 다운되기 때문에) 이를 해결하기 위해 나온 것이 멀티호스트 도커 플랫폼이며 도커 플랫폼을 2개 이상 띄우는 것을 의미한다. 또한 이왕이면 시스템의 부하를 줄일 수 있는 분산처리를 할 수 있도록 자원을 분배한다.

컨테이너 오케스트레이션

오케스트레이션은 지휘자가 이 음악에 가장 잘 어울리는 구조로 배치하는 개념처럼 쿠버네티스도 가장 적합한 구조로 컨테이너를 배치시키고 관리한다.

멀티호스트 도커 플랫폼으로 시스템의 다운 같은 현상은 완화했다하더라도, 하나의 서비스 안에는 무수히 많은 애플리케이션이 있으며, 분산처리를 위해 엔지니어가 컨테이너를 각각의 하드웨어 자원에 맞게 애플리케이션을 배치시키는 작업은 매우 어려울 것이다. 그래서 나온 개념이 컨테이너 오케스트레이션이며 가장 대표적인 것이 쿠버네티스이다.

CNCF

cncf.io

CNCF는 CLOUD NATIVE COMPUTING FOUNDATION 약어로써, 컨테이너 기반의 기술적인 문제를 오픈소스로 해결하는 것을 목표로 하며, 대표적으로 k8s, Prometheus와 같은 클라우드 네이티브 오픈소스 기술들을 추진하고 관리하는 단체이다.

비즈니스 환경에서 매출의 가장 큰 영향을 주는 것은, 고객 요구의 다양성을 얼마나 빠르게 응대해 줄 수 있는가가 가장 핵심 요소인데 쿠버네티스는 이를 반영하기에 가장 적합한 요소이다.

K8S의 특징

  • 워크로드 분리(노드1, 노드2 등)
  • 어디서나 실행가능 - 온프레미스, 퍼블릭 클라우드(AKS, EKS, GKE 등)
  • 선언적 API

    • 가장 큰 특징이며, 요청을 Control plane이 받으면 쿠버네티스가 알아서 요청에 대한 처리를 해준다.

K8S 커뮤니티

Reference

https://github.com/arisu1000/kubernetes-book-sample

VM - Ubuntu20.04 설치

Master, Node1, Node2 시스템에 도커 설치

쿠버네티스 설치: v1.18


Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github